package com.sky.controller.admin;


import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

@RestController("adminShopController")//结合了@Controller和@ResponseBody，一个类是RESTful风格的控制器，直接返回数据而不是视图
@Slf4j//用于自动生成日志记录器，并且这个注解省去了手动写Logger对象的麻烦
@RequestMapping("/admin/shop")//，用来映射HTTP请求到控制器方法。
@Api(tags = "店铺相关接口")//来自Swagger的注解，用于生成API文档。tags参数将接口分类，方便在Swagger UI中查看。为什么接口会被分组到这个标签下
public class ShopController {
    public static final String KEY="SHOP_STATUS";

    @Autowired//用于自动装配bean，通常用于注入依赖。比如在控制器中注入服务层
    private RedisTemplate redisTemplate;
    /**
     * 设置店铺的营业状态
     *
     */
@PutMapping("/{status}")//属于Spring MVC的一部分，用于处理HTTP PUT请求。路径中的{status}是一个路径变量，表示可以通过URL传递状态值。
@ApiOperation("设置店铺的营业状态")//这是Swagger的注解，用来给API接口添加描述，方便生成文档
    public Result setStatus(@PathVariable Integer status){
    log.info("设置店铺的营业状态：{}",status==1 ? "营业中":"打烊中");
    redisTemplate.opsForValue().set(KEY,status);
    return Result.success();
}
    /**
     * 获取店铺的营业状态
     *
     */
@GetMapping("/status")
@ApiOperation("获取店铺的营业状态")
public Result<Integer> getStatus(){
    Integer status=(Integer)redisTemplate.opsForValue().get(KEY);
    log.info("获取店铺状态为：{}",status==1 ? "营业中":"打烊中");
     return Result.success(status);
}
}
